Задание на курсовой проект
Фирма по заказу клиента комплектует и продает компьютеры. Клиент в заказе указывает разновидности следующих блоков компьютера
1. Системный блок
2. Материнская плата характеризуется типом процессора и тактовой частотой
3. ОЗУ характеризуется емкостью
4. Жесткий диск характеризуется емкостью МБ
5. Видеокарта тип и емкость памяти
6. Монитор тип
7. Дисковод для гибких дисков 35 дюйма
8. Мышь тип
Для всех разновидностей блоков известна цена.
После оформления заказа в который может входить несколько комплектов компьютеров для каждого комплекта определяется сокращенное название по общепринятой методике и цена комплекта.
Клиенту выписывают счет с указанием выбранных комплектов их ценой и общей суммой по счету датой выписки счета. Все оформленные заказы и счета хранятся в соответствующих таблицах. Для каждого счета нужно иметь возможность сделать отметку о дате оплаты. Нужно иметь возможность изменять данные о блоках имеющихся на фирме. В конце каждого месяца выпускается отчет с указанием для каждого проданного блока количества и общей суммы продаж.
Вариант 24. Заказы могут оформляться разными продавцами. Сведения о продавце код фамилия имя отчество хранятся вместе с заказом и в конце месяца подсчитывается сумма продаж для каждого продавца. При оформлении заказа считаем что все блоки имеющиеся в перечне есть на складе в нужном количестве.

Содержание
1.Введение 4
2.Теоретическая часть 5
2.1. Структурированный язык запросов SQL. 5
2.2. Реляционная модель 6
3.Разработка базы данных 8
3.1. Диаграммы ER-типа. 8
3.2. Структура базы данных. 8
3.3. Структура всех таблиц базы данных. 9
4.Описание программы 11
4.1. Основные понятия цели и задачи 11
4.2. Описание интерфейса программы 11
4.3. Блок схемы 13
5.Заключение 15
6.Список использованной литературы 16
7.Приложение исходные тексты с комментариями 17
7.1. Главная форма — FormMain 17
7.2. Data module – DM1 40
7.3. Форма редактирование таблицы — FormTRed 40
7.4. Форма — FormAdmin 42
7.5. Отчет – Товарный чек 45
7.6. Отчет – Месячная отчетность 46

_________________________________________________________________

Работа № 4262. Это ОЗНАКОМИТЕЛЬНАЯ ВЕРСИЯ работы.

Цена оригинала 1000 рублей. Оформлен в программе Microsoft Word.

Оплата. Контакты

_________________________________________________________________

1. Введение
Базы данных используются повсюду включая большую часть проектов в мире. Всё начиная от простейших программ до серьезных проектов. Базы данных в том или ином виде сегодня окружают нас повсюду — в самом обычном смартфоне их сотни что разумеется далеко не предел.
Целью нашей работы является закрепление и углубление знаний полученных при изучении дисциплины “Базы данных”. Развитие навыков самостоятельной работы при проектировании реляционных баз дынных и создании прикладных программ для работы с реляционными базами данных.

2. Теоретическая часть
В литературе предлагается множество определений понятия «база данных отражающих скорее субъективное мнение тех или иных авторов однако общепризнанная единая формулировка отсутствует. Определение из международных стандартов База данных — совокупность данных хранимых в соответствии со схемой данных манипулирование которыми выполняют в соответствии с правилами средств моделирования данных.
Базы данных – это программы которые позволяют сохранять и получать большие объемы связанной информации[1]. Базы данных состоят из таблиц которые содержат информацию. Когда создаете базу данных необходимо подумать о том какие таблицы нужно создать и какие связи существуют между информацией в таблицах. Иначе говоря нужно подумать о проекте вашей базы данных. Хороший проект базы данных обеспечит целостность данных и простоту их обслуживания.

2.1 Структурированный язык запросов SQL.

Advertisement
Узнайте стоимость Online
  • Тип работы
  • Часть диплома
  • Дипломная работа
  • Курсовая работа
  • Контрольная работа
  • Решение задач
  • Реферат
  • Научно - исследовательская работа
  • Отчет по практике
  • Ответы на билеты
  • Тест/экзамен online
  • Монография
  • Эссе
  • Доклад
  • Компьютерный набор текста
  • Компьютерный чертеж
  • Рецензия
  • Перевод
  • Репетитор
  • Бизнес-план
  • Конспекты
  • Проверка качества
  • Единоразовая консультация
  • Аспирантский реферат
  • Магистерская работа
  • Научная статья
  • Научный труд
  • Техническая редакция текста
  • Чертеж от руки
  • Диаграммы, таблицы
  • Презентация к защите
  • Тезисный план
  • Речь к диплому
  • Доработка заказа клиента
  • Отзыв на диплом
  • Публикация статьи в ВАК
  • Публикация статьи в Scopus
  • Дипломная работа MBA
  • Повышение оригинальности
  • Копирайтинг
  • Другое
Прикрепить файл
Рассчитать стоимость

База данных создается для хранения в ней информации и получения этой информации при необходимости. Это значит что мы должны иметь возможность помещать вставлять INSERT информацию в базу данных и мы хотим иметь возможность делать выборку информации из базы данных SELECT. Язык запросов к базам данных был придуман для этих целей и был назван Структурированный язык запросов или SQL. Операции вставки данных INSERT и их выборки SELECT – части этого самого языка.
Рисунок 2.1.1 — пример запроса на выборку данных и его результат.
То как вы спроектируете базу данных будет оказывать непосредственное влияние на запросы которые вам будет необходимо выполнить чтобы получить данные из базы данных[4]. Это еще одна причина почему вам необходимо задуматься о том какой должна быть ваша база. С хорошо спроектированной базой данных ваши запросы могут быть чище и проще.
2.2 Реляционная модель
Реляционная база данных представляет собой набор таблиц сущностей. Таблицы состоят из колонок и строк кортежей. Внутри таблиц могут быть определены ограничения между таблицами существуют отношения. При помощи SQL можно выполнять запросы которые возвращают наборы данных получаемых из одной или нескольких таблиц[3]. В рамках одного запроса данные получаются из нескольких таблиц путем их соединения JOIN чаще всего для соединения используются те же колонки которые определяют отношения между таблицами. Нормализация — это процесс структурирования модели данных обеспечивающий связность и отсутствие избыточности в данных.
Рисунок 2.2.1 – пример типичной реляционной модели.
Доступ к реляционным базам данных осуществляется через реляционные системы управления базами данныхРСУБД. Почти все системы баз данных которые мы используем являются реляционными такие как Oracle SQL Server MySQL Sybase DB2 TeraData и так далее.
Причины такого доминирования неочевидны. На протяжении всего существования реляционных БД они постоянно предлагали наилучшую смесь простоты устойчивости гибкости производительности масштабируемости и совместимости в сфере управлении данными[2].
Однако чтобы обеспечить все эти особенности реляционные хранилища невероятно сложны внутри. Например простой SELECT запрос может иметь сотни потенциальных путей выполнения которые оптимизатор оценит непосредственно во время выполнения запроса. Все это скрыто от пользователей однако внутри РСУБД создает план выполнения основывающийся на вещах вроде алгоритмов оценки стоимости и наилучшим образом отвечающий запросу.
3. Разработка базы данных
Очень важно определить какие именно таблицы и поля потребуются в базе данных. Это ядро разработки и самая сложная её часть. Использование правильных методов связки таблиц определение структуры данных в каждой таблице выявление необходимости разброса этих данных по разным таблицам — все эти проблемы всплывают при непосредственном проектировании базы данных. Необходимо определить список очевидно необходимых таблиц и полей будьте как можно более конкретным. В ходе этого процесса какие-то элементы могут быть перестроены либо реорганизованы в целях повышения эффективности и безопасности базы данных.
3.1 Диаграммы ER-типа.
3.2 Структура базы данных.
База данных состоит из четырех таблиц. Таблица “Товары” нужна для хранения информации обо всех товарах. Таблица “Заказы” содержит в себе информацию о заказах и связана со всеми другими таблицами. Таблица “Счета” содержит в себе информацию о сумме заказа и о датах выписки и оплаты. Таблица “Продавцы” содержит в себе сведения о продавце.
Рисунок 3.2.1 – Структурная схема базы данных.
3.3 Структура всех таблиц базы данных.
Таблица “Товары” содержит следующие поля Таблица 3.3.1.
Таблица 3.3.1 “Товары”
Имя Назначение Тип данных Размер поля Ключ
Артикул Индекс товара Счетчик Длинное целое +
Тип товара Описание типа товара Текстовый 25
Наименование товара Описание товара Текстовый 80
Гарантия Гарантия Числовой Длинное целое
Кол-во Текущее кол-во товаров Числовой Длинное целое
Цена Цена Денежный Денежный
Фото Фотография ссылка на размещение на компьютере Текстовый 120
Таблица “Заказы” содержит следующие поля Таблица 3.3.2.
Таблица 3.3.2 “Заказы”
Имя Назначение Тип данных Размер поля Ключ
Код заказа Номер заказа Числовой Длинное целое
Код продавца Номер продавца Числовой Длинное целое
Артикул Индекс товара Числовой Длинное целое
Количество Выбранное кол-во Числовой Длинное целое
Статус заказа Текущий статус заказа Текстовый 100
Таблица “Продавцы” содержит следующие поля Таблица 3.3.3.
Таблица 3.3.3 “ Продавцы ”
Имя Назначение Тип данных Размер поля Ключ
Код Номер продавца Счетчик Длинное целое +
Фамилия Фамилия продавца Текстовый 50
Имя Имя продавца Текстовый 50
Отчество Отчество продавца Текстовый 50
Таблица “Счета” содержит следующие поля Таблица 3.3.4.
Таблица 3.3.4 “ Продавцы ”
Имя Назначение Тип данных Размер поля Ключ
Код Номер счета Счетчик Длинное целое +
Код заказа Номер заказа Числовой Длинное целое
Сумма Сумма к оплате Числовой Длинное целое
Дата выписки Дата выписки счета Датавремя Краткий формат даты
Дата оплаты Дата оплаты Датавремя Краткий формат даты
4. Описание программы
4.1 Основные понятия цели и задачи
В курсовой работе была поставлена задача разработки базы данных компьютерного магазина и программы для работы с ней. Клиент оформляет заказ из нескольких товаров и ему выписывается счет. Все оформленные заказы и счета хранятся в соответствующих таблицах в базе данных. В конце каждого месяца выпускается отчет с указанием для каждого проданного блока количества и общей суммы продаж. В своей курсовой работе мы использовали СУБД MS Access и интегрированной инструментальной средой Delphi 7.
4.2 Описание интерфейса программы
После запуска программы вы увидите главное окно программы рисунок 4.2.1. Перемещение окна и изменение его размеров осуществляется стандартно как и в обычных приложениях.
Рисунок 4.2.1. – Главное окно программы
В левой части окна располагается 4 кнопки и дерево выбора типа товара. В центре располагается панель выбора товара. Для перехода в режим редактирования всех таблиц нужно нажать правой кнопкой по таблице и выбрать редактировать рисунок 4.2.2.
Рисунок 4.2.2 – Редактор таблиц
При нажатии на кнопку «Корзина показывает наш текущий заказ рисунок 4.2.3.
Рисунок 4.2.3 – Главное окно программы при нажатии на кнопку Корзина
В данном окне можно добавлять товары по артиклу изменять количество товаром и оформить заказ.
При нажатии на кнопку «Статус заказа показывает наш текущий статус заказа если заказ ожидает оплаты то пользователю выдается счет рисунок 4.2.4.
Рисунок 4.2.4 – Счет.
При нажатии на кнопку «Обработка заказа появляется окно диалоговое окно. Оно нужно для подтверждения заказа.
При нажатии на кнопку «Месячная отчетность программа выдает перечень товаров за указанный месяц и год рисунок 4.2.5.
Рисунок 4.2.5 – Месячный отчет.
4.3 Блок схемы
Рисунок 4.3.1 – Основной алгоритм работы программы
Рисунок 4.3.2 – Алгоритм оформления заказа
5. Заключение
В этой курсовой работе рассматривалась тема разработки базы данных. Базы данных всегда были важнейшей темой при изучении информационных систем. Однако в последние годы всплеск популярности Интернета и бурное развитие новых технологий для Интернета сделали знание технологии баз данных для многих одним из актуальнейших путей карьеры. Технологии баз данных увели Интернет-приложения далеко от простых брошюрных публикаций которые характеризовали ранние приложения. В то же время Интернет-технология обеспечивает пользователям стандартизированные и доступные средства публикации содержимого баз данных. Правда ни одна из этих новых разработок не отменяет необходимости в классических приложениях баз данных которые появились еще до развития Интернета для нужд бизнеса. Это только расширяет важность знания баз данных.
В процессе выполнении курсовой работы мы закрепили и углубили знаний полученные при изучении дисциплины “Базы данных”. Разработанная программа предназначена для использования на фирме которая по заказу клиента комплектует и продает компьютеры.
6. Список использованной литературы
1. Дейт К.Дж. SQL и реляционная теория. Как грамотно писать код на SQL.-Пер. с англ. – СПб. Символ-Плюс 2010. – 480 с. ил.
2. Одиночкина С.В. Разработка баз данных в Microsoft Access 2010 – СПб. НИУ ИТМО 2012.–83 с.
3. Гурвиц Г.А. Microsoft Access 2010. Разработка приложений на реальном примере.-СПб. БХВ-Петербург 2010. – 496 с.
4. Астахова И.Ф. SQL в примерах и задачах – Мн. Новое знание 2002. – 176 с.
7. Приложение исходные тексты с комментариями
7.1 Главная форма — FormMain
unit Unit1
interface
uses
Windows Messages SysUtils Variants Classes Graphics Controls
ADODB ImgList ComCtrls Grids StdCtrls DBGrids ExtCtrls Buttons Forms
Dialogsjpeg ToolWin Menus
type
procedure FormCreateSender TObject
procedure FormResizeSender TObject
procedure PTopMouseMoveSender TObject Shift TShiftState X
Y Integer
procedure StatusBar1DrawPanelStatusBar TStatusBar
Panel TStatusPanel const Rect TRect
procedure SBcloseClickSender TObject
procedure SBmaxClickSender TObject
procedure SBminClickSender TObject
procedure TVTypeClickSender TObject
procedure DBGrid1CellClickColumn TColumn
procedure DBGrid1KeyUpSender TObject var Key Word
Shift TShiftState
procedure SpeedButton1ClickSender TObject
procedure TVTypeKeyUpSender TObject var Key Word
Shift TShiftState
procedure SBCartClickSender TObject
procedure PCartResizeSender TObject
procedure SBMAddClickSender TObject
procedure SBClearClickSender TObject
procedure SGCartDrawCellSender TObject ACol ARow Integer
Rect TRect State TGridDrawState
procedure SBMakeClickSender TObject
procedure SpeedButton3ClickSender TObject
procedure SBShowAddClickSender TObject
procedure SBAddClickSender TObject
procedure EAddKeyPressSender TObject var Key Char
procedure SGCartKeyUpSender TObject var Key Word
Shift TShiftState
procedure BtnClickSender TObject
procedure SGCartSelectCellSender TObject ACol ARow Integer
var CanSelect Boolean
procedure DBGrid1TitleClickColumn TColumn
procedure EMkolKeyPressSender TObject var Key Char
procedure PFindResizeSender TObject
procedure EMFindKeyPressSender TObject var Key Char
procedure SBMFindClickSender TObject
procedure N1ClickSender TObject
procedure SpeedButton2ClickSender TObject
private
Btn1 TSpeedButton
Btn2 TSpeedButton
procedure HitTestvar Msg TWMNCHitTest message WM_NCHITTEST
procedure DisplayHintSender TObject
public
{ Public declarations }
end
var
FormMain TFormMain
implementation
Uses UnitDM Unit2 Unit3 DB Unit4 Unit5
{$R .dfm}
Функция для удобного отображения денежных средств
function myFormatMoneym real string
var
ikL integer
ss2 string
begin
s = FloatToStrm
k = PosDecimalSeparators
if k = 0 then s2 = »
else begin
s2 = copyskLengths-k+1
s = copys1k-1
end
L = Lengths
k = L div 3
for i=1 to k do
if i = 1 then s2 = CopysL-i3+13 + s2
else s2 = CopysL-i3+13+ ‘ ‘ + s2
s2 = Copys1L-k3 + ‘ ‘ + s2
result = s2
end
if count = 1 then exit
else deccount
else begin
buf = DM1.ADOQuery1.SQL.Text
with SGCart do
myADOquery’SELECT [Кол-во] FROM Товары WHERE Артикул = ‘+Cells[0Row]DM1.ADOQuery1
max = DM1.DataSource1.DataSet.Fields.Fields[0].AsInteger
myADOquerybufDM1.ADOQuery1
if count = max or max = 0 then exit
else inccount
end
with SGCart do begin
Cells[Col+1Row] = FloatToStrcountStrToFloatCells[Col-1Row]
Cells[ColRow] = IntToStrcount
end
end
calcSumSGCartLPrice
end
procedure TFormMain.FormCreateSender TObject
Var
Li integer
begin
Btn1 = TSpeedButton.CreateSelf
Btn1.Parent = SGCart
Btn1.Name = ‘MyBtnSG1’
Btn1.Height = SGCart.DefaultRowHeight
Btn1.Width = 20
Btn1.Font.Name = ‘Arial’
Btn1.Font.Style = [fsBold]
Btn1.Font.Size = 12
Btn1.Caption = »
Btn1.Glyph.LoadFromFileextractfilepathparamstr0+’Pictminus.bmp’
Btn1.Hint = ‘Уменьшить’
Btn1.ShowHint = False
Btn1.OnClick = BtnClick
Btn1.Visible = False
Btn1.Flat = True
Btn1.Tag = 0
Btn2 = TSpeedButton.CreateSelf
Btn2.Parent = SGCart
Btn2.Name = ‘MyBtnSG2′
Btn2.Height = SGCart.DefaultRowHeight
Btn2.Width = 20
Btn2.Font = Btn1.Font
Btn2.Caption = »
Btn2.Glyph.LoadFromFileextractfilepathparamstr0+’Pictplus.bmp’
Btn2.Hint = ‘Увеличить’
Btn2.ShowHint = False
Btn2.OnClick = BtnClick
Btn2.Visible = False
Btn2.Flat = True
Btn2.Tag = 1
with DM1 do begin
myADOquery’SELECT [Тип товара] CountЦена AS Количество FROM Товары GROUP BY [Тип товара]’ADOQuery1
L = DataSource1.DataSet.RecordCount-1
TVType.Items.AddFirstnil’Все’
for i=0 to L do begin
TVType.Items.AddChildTVType.Items[0] DataSource1.DataSet.Fields.Fields[0].Value
TVType.Items[i+1].StateIndex = i+1
DataSource1.DataSet.Next
with bm.Canvas do begin
Pen.Color = clWhite
Brush.Color = clWhite
Rectangle00bm.Widthbm.Height
Pen.Color = clSilver
RoundRectLMPrice.Left — bord LMPrice.Top — bord PMain.Width — 15 SBMAdd.Top + SBMAdd.Height bord bord
end
IMFon.Picture.Bitmap = bm
Bm.Free
end
procedure TFormMain.PTopMouseMoveSender TObject Shift TShiftState X
Y Integer
begin
ReleaseCapture
PerformWM_SYSCOMMANDSC_MOVE+20
end
procedure TFormMain.HitTestvar Msg TWMNCHitTest
var xy integer
begin
inherited
x = Msg.XPos — Left
y = Msg.YPos — Top
if x <= 5 then begin
if y <= 5 then Msg.Result = HTTOPLEFT
else
if y >= ClientHeight — 5 then Msg.Result = HTBOTTOMLEFT
else Msg.Result = HTLEFT
end
else begin
if y <= 5 then begin
if x >= ClientWidth — 5 then Msg.Result = HTTOPRIGHT
else Msg.Result = HTTOP
end
else begin
if y >= ClientHeight — 5 then begin
if x>= ClientWidth — 5 then Msg.Result = HTBOTTOMRIGHT
else Msg.Result = HTBOTTOM
end
else
if x>= ClientWidth — 5 then Msg.Result = HTRIGHT
else Msg.Result = HTCAPTION
end
end
end
procedure TFormMain.StatusBar1DrawPanelStatusBar TStatusBar
Panel TStatusPanel const Rect TRect
begin
with StatusBar.Canvas do begin
Brush.Color = StatusBar.Color
Font.Color = clWhite
TextOutRect.Left+5 Rect.Top Panel.Text
end
end
procedure TFormMain.DisplayHintSender TObject
begin
StatusBar1.Panels[0].Text = Application.Hint
end
procedure TFormMain.SBcloseClickSender TObject
begin
close
end
procedure TFormMain.SBmaxClickSender TObject
begin
if WindowState = wsMaximized then WindowState = wsNormal
else WindowState = wsMaximized
Resize
end
procedure TFormMain.SBminClickSender TObject
begin
Application.Minimize
Resize
end
procedure TFormMain.TVTypeClickSender TObject
begin
with DM1 do
if TVType.Selected.StateIndex = -1 then myADOquery’SELECT FROM Товары’ADOQuery1
else myADOquery’SELECT FROM Товары WHERE [Тип товара] = ‘+TVType.Selected.Text+»ADOQuery1
DBGrid1.Fields[6].Visible = False
end
procedure TFormMain.DBGrid1CellClickColumn TColumn
var
myDirstr string
begin
UDMKkol.Position = UDMKkol.Min
UDMKkol.Max = DM1.DataSource1.DataSet.Fields.Fields[4].AsInteger
myDir = extractfilepathparamstr0
str = DM1.DataSource1.DataSet.Fields.Fields[6].AsString
if str <> » then begin
Image1.Picture.LoadFromFilemyDir + ‘PictBD’+str
end
else Image1.Picture = nil
with DM1.DataSource1.DataSet.Fields do begin
str = Fields[2].AsString
LMTop.Caption = Fields[1].AsString+’ ‘+Copystr1Pos»str-1
LMArt.Caption = ‘Арт. ‘+Fields[0].AsString
LMGarant.Caption = ‘Гарантия ‘+Fields[3].AsString+’ мес.’
LMAbout.Caption = str
LMPrice.Caption = myFormatMoneyFields[5].AsFloat + ‘ руб.’
if Fields[4].AsInteger = 0 then begin
LMmaxk.Caption = ‘Товара нет в наличие’
SBMAdd.Enabled = False
end
else begin
LMmaxk.Caption = ‘Есть в наличии ‘ + Fields[4].AsString + ‘ шт.’
SBMAdd.Enabled = True
end
end
Resize
end
procedure TFormMain.DBGrid1KeyUpSender TObject var Key Word
Shift TShiftState
var
myDirstr string
begin
if key = 13 then SBMAddClickSelf
if key <> 38 and key <> 40 then Exit
UDMKkol.Position = UDMKkol.Min
UDMKkol.Max = DM1.DataSource1.DataSet.Fields.Fields[4].AsInteger
myDir = extractfilepathparamstr0
str = DM1.DataSource1.DataSet.Fields.Fields[6].AsString
if str <> » then begin
Image1.Picture.LoadFromFilemyDir + ‘PictBD’+str
end
else Image1.Picture = nil
with DM1.DataSource1.DataSet.Fields do begin
str = Fields[2].AsString
LMTop.Caption = Fields[1].AsString+’ ‘+Copystr1Pos»str-1
LMArt.Caption = ‘Арт. ‘+Fields[0].AsString
LMGarant.Caption = ‘Гарантия ‘+Fields[3].AsString+’ мес.’
LMAbout.Caption = str
LMPrice.Caption = myFormatMoneyFields[5].AsFloat + ‘ руб.’
if Fields[4].AsInteger = 0 then begin
LMmaxk.Caption = ‘Товара нет в наличие’
SBMAdd.Enabled = False
end
else begin
LMmaxk.Caption = ‘Есть в наличии ‘ + Fields[4].AsString + ‘ шт.’
SBMAdd.Enabled = True
end
end
Resize
end
procedure TFormMain.SpeedButton1ClickSender TObject
begin
Application.CreateFormTFormAdmin FormAdmin
FormAdmin.Show
end
procedure TFormMain.TVTypeKeyUpSender TObject var Key Word
Shift TShiftState
begin
if key <> 38 and key <> 40 then Exit
with DM1 do
if TVType.Selected.StateIndex = -1 then myADOquery’SELECT FROM Товары’ADOQuery1
else myADOquery’SELECT FROM Товары WHERE [Тип товара] = ‘+TVType.Selected.Text+»ADOQuery1
DBGrid1.Fields[6].Visible = False
end
procedure TFormMain.SBCartClickSender TObject
begin
PCart.Visible = not PCart.Visible
if not PCart.Visible then exit
with PCart do begin
Left = 5
Top = 5
Width = PMain.Width — 10
Height = PMain.Height — 10
end
end
procedure TFormMain.PCartResizeSender TObject
begin
with SGCart do begin
Width = PCart.Width — 10
Height = PCart.Height — Top — 40 — SBShowAdd.Height — SBMake.Height
ColWidths[1] = Width-4ColWidths[2]-25
LPrice.Top = Top + Height + 10
SBMake.Top = LPrice.Top + LPrice.Height + 10
SBMake.Width = LPrice.Width + 20
SBMake.Left = Width — SBMake.Width
LPrice.Left = SBMake.Left + 10
SBShowAdd.Top = LPrice.Top
if EAdd.Visible then begin
EAdd.Top = SBShowAdd.Top + SBShowAdd.Height + 5
LAddHelp.Top= EAdd.Top + EAdd.Height + 5
SBAdd.Top = EAdd.Top
end
SGCart.Row = 0
SGCart.Col = 0
end
end
procedure TFormMain.SBMAddClickSender TObject
var
ki integer
flag boolean
begin
with SGCart do begin
k = RowCount
flag = false
for i = 1 to k-1 do begin
if DM1.DataSource1.DataSet.Fields.Fields[0].AsString = cells[0i] then begin
flag = true
break
end
end
until str = »
myADOquerybufDM1.ADOQuery1
DBGrid1.Fields[6].Visible = False
calcSumSGCartLPrice
SBShowAddClickself
PCartResizeSelf
end
procedure TFormMain.EAddKeyPressSender TObject var Key Char
begin
case key of
‘0’..’9’#8»
#13 SBAddClickself
else key = Chr0
end
end
procedure DeleteRowSG TStringGrid ARowInteger
var
ij integer
begin
with SG do begin
for i=ARow+1 to RowCount-1 do
for j=0 to ColCount-1 do
Cells[ji-1] = Cells[ji]
for i=0 to ColCount-1 do
Cells[iRowCount-1] = »
RowCount = RowCount — 1
end
end
procedure TFormMain.SGCartKeyUpSender TObject var Key Word
Shift TShiftState
begin
if key = VK_DELETE then begin
if SGCart.Row = 0 then Exit
ShowMessage’Удаление товара [‘+SGCart.Cells[0SGCart.Row]+’]’
DeleteRowSGCartSGCart.Row
calcSumSGCartLPrice
PCartResizeself
end
end
procedure TFormMain.SGCartSelectCellSender TObject ACol ARow Integer
var CanSelect Boolean
var
CR TRect
begin
if ACol = 3 and ARow > 0 then begin
CR = SGCart.CellRectAColARow
Btn1.Left = CR.Left
Btn1.Top = CR.Top
Btn1.Visible = True
Btn2.Left = CR.Right — Btn2.Width
Btn2.Top = CR.Top
Btn2.Visible = True
end
else begin
Btn1.Visible = False
Btn2.Visible = False
end
end
procedure TFormMain.DBGrid1TitleClickColumn TColumn
var
str String
k integer
begin
str = DM1.ADOQuery1.SQL.Text
k = pos’ORDER BY’str
if k = 0 then myADOquerystr+’ ORDER BY [‘+Column.FieldName+’] ASC’DM1.ADOQuery1
else
if Pos’ASC’str = 0 then myADOqueryCopystr1k-1+’ ORDER BY [‘+Column.FieldName+’] ASC’DM1.ADOQuery1
else myADOqueryCopystr1k-1+’ ORDER BY [‘+Column.FieldName+’] DESC’DM1.ADOQuery1
DBGrid1.Fields[6].Visible = False
end
procedure TFormMain.EMkolKeyPressSender TObject var Key Char
begin
case key of
‘0’..’9′ #8
#13 SBMAddClickSelf
else key = Chr0
end
end
SQL.Clear
SQL.Add’SELECT ‘+IntToStrm+’.’+IntToStrg+’ as Код Товары.Артикул Товары.[Наименование товара] Товары.Цена Заказы.Количество Товары.ЦенаЗаказы.Количество as Сумма’
SQL.Add’FROM Товары Заказы Счета’
SQL.Add’WHERE Товары.Артикул=[Заказы].[Артикул] AND Заказы.[Код заказа]=[Счета].[Код заказа]’
SQL.Add’and MonthСчета.[Дата выписки] = ‘+IntToStrm+’ and YearСчета.[Дата выписки] = ‘+IntToStrg+»
Active = True
end
Form5.QuickRep1.Preview
end
end.
7.2 Data module – DM1
unit UnitDM
interface
uses
SysUtils Classes DB ADODB
type
TDM1 = classTDataModule
DM1 TDM1
implementation
{$R .dfm}
end.
7.3 Форма редактирование таблицы — FormTRed
unit Unit4
interface
uses
Windows Messages SysUtils Variants Classes Graphics Controls Forms
Dialogs DBCtrls ExtCtrls Grids DBGrids UnitDM DB ADODB StdCtrls
type
procedure TFormTRed.FormCreateSender TObject
begin
buf = DM1.ADOQuery1.SQL.GetText
DBGrid1.OnTitleClick = FormMain.DBGrid1.OnTitleClick
end
procedure TFormTRed.FormCloseSender TObject var Action TCloseAction
begin
with DM1.ADOQuery1 do begin
SQL.Clear
SQL.Addbuf
Active = True
end
end
procedure TFormTRed.RadioGroup1ClickSender TObject
begin
with DM1.ADOQuery1RadioGroup1 do begin
SQL.Clear
SQL.Add’SELECT FROM ‘+Items[Itemindex]
Active = True
end
end
end.
7.4 Форма — FormAdmin
unit Unit2
interface
uses
Windows Messages SysUtils Variants Classes Graphics Controls Forms
Dialogs StdCtrls UnitDM DB ADODB Buttons
type
procedure checkAllADOQ TADOQuery DS TDataSource LB TListBox
var
ki integer
begin
LB.Items.Clear
myADOquery’SELECT [Код заказа][Статус заказа] FROM Заказы GROUP BY [Код заказа][Статус заказа]’ADOQ
k = DS.DataSet.RecordCount
for i = 0 to k-1 do begin
LB.Items.Add’Код ‘+DS.DataSet.Fields.Fields[0].AsString+’ Статус ‘+DS.DataSet.Fields.Fields[1].AsString
DS.DataSet.Next
end
end
procedure TFormAdmin.FormCreateSender TObject
begin
checkAllADOQuery1DataSource1ListBox1
end
procedure TFormAdmin.ListBox1DrawItemControl TWinControl Index Integer
Rect TRect State TOwnerDrawState
begin
with Control as TListBox.Canvas do begin
if Pos’Ожидает подтверждения’ListBox1.Items.Strings[Index]<>0 then Brush.Color = ClRed
else Brush.Color = clGreen
FillRectRect
TextOutRect.Left + 2 Rect.Top Control as TListBox.Items[Index]
end
end
procedure TFormAdmin.SpeedButton1ClickSender TObject
var
kmn integer
str string
begin
if ListBox1.ItemIndex = -1 then exit
str = ListBox1.Items.Strings[ListBox1.ItemIndex]
m = Pos’Статус ‘str+Length’Статус ‘
if CopystrmLengthstr-m+1 <> ‘Ожидает подтверждения’ then begin
showMessage’Этот заказ уже обработан’
exit
end
m = Pos»str+2
k = StrToIntCopystrmPos’Статус’str-1-m
myADOquery’Select MAXКод FROM Счета’ADOQuery1
n = DataSource1.DataSet.Fields.Fields[0].AsInteger
if n = 0 then n = 1
else incn
ADOCommand1.CommandText = ‘INSERT INTO Счета Код [Код заказа]Сумма[Дата выписки] SELECT ‘+IntToStrn+»+IntToStrk+’SUMТовары.ЦенаЗаказы.Количество datevalue’+DateToStrNow+’ FROM ЗаказыТовары WHERE Заказы.Артикул=Товары.Артикул And Заказы.[Код заказа]=’+IntToStrk+»
ADOCommand1.Execute
ADOCommand1.CommandText = ‘UPDATE Заказы SET [Статус заказа] = Ожидает оплаты WHERE [Код заказа] = ‘+IntToStrk
ADOCommand1.Execute
checkAllADOQuery1DataSource1ListBox1
end
end.
7.5 Отчет – Товарный чек
unit Unit3
interface
uses
Windows Messages SysUtils Variants Classes Graphics Controls Forms
Dialogs QRCtrls QuickRpt ExtCtrls UnitDM DB ADODB
type
TForm3 = classTForm
QuickRep1 TQuickRep
QRBand1 TQRBand
QRSysData1 TQRSysData
QRBand2 TQRBand
7.6 Отчет – Месячная отчетность
unit Unit5
interface
uses
Windows Messages SysUtils Variants Classes Graphics Controls Forms
Dialogs DB ADODB QRCtrls QuickRpt ExtCtrls UnitDM
type
TForm5 = classTForm
QuickRep1 TQuickRep
QRBand1 TQRBand
QRSysData1 TQRSysData
QRBand2 TQRBand